#ifndef __MAIN_H__
#define __MAIN_H__

/* 库函数 */
#include <stm32f4xx.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/* SYSTEM */
#include "sys.h"
#include "delay.h"
#include "usart.h"

/* FreeRTOS */
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
#include "event_groups.h"
#include "queue.h"

/* HARDWARE */
#include "led.h"
#include "deep.h"
#include "dht11.h"
#include "key.h"
#include "keyboard.h"
#include "tim.h"
#include "rtc.h"
#include "oled.h"
#include "esp8266.h"
#include "MFRC522.h"
#include "sr04.h"
#include "adc.h"
#include "i2c.h"
#include "iwdg.h"

/* MQTT */
#include "esp8266_mqtt.h"

/* UTILS */
#include "cJSON.h"



/*任务声明*/
extern void app_task_init   	(void *pvParameters);
extern void app_task_usart  	(void *pvParameters);
extern void app_task_mqtt_recv	(void *pvParameters);  // MQTT接收订阅数据
extern void app_task_mqtt_heart	(void *pvParameters);  // MQTT发送心跳包
extern void app_task_mqtt_send	(void *pvParameters);  // MQTT发送检测数据
extern void app_task_dht		(void *pvParameters);
extern void app_task_rfid		(void *pvParameters);
extern void app_task_key		(void *pvParameters);  // 开发板按钮
extern void app_task_keyboard	(void *pvParameters);  // 开发板按钮
extern void app_task_led		(void* pvParameters);
extern void app_task_oled		(void *pvParameters);
extern void app_task_rtc		(void *pvParameters);  // 实时时钟
extern void app_task_beep		(void *pvParameters);  // 蜂鸣器
extern void app_task_bluetooth  (void* pvParameters);  // 蓝牙
extern void app_task_rfid_rw	(void* pvParameters);  // RFID读写
extern void app_task_sr04       (void* pvParameters);  // 超声波
extern void app_task_adc_flame  (void* pvParameters);  // 火焰传感器
extern void app_task_adc_gas    (void* pvParameters);  // 可燃气体传感器


/**
 @brief 设备初始化
*/
void device_init(void);


/**
 @brief 解析JSON
*/
void mqtt_cjson_parse(char *pbuf);



/**
 @brief MQTT消息组装
*/
void mqtt_msg_generate(char *pbuf, char *key, char *value);


#endif  // __MAIN_H__
